import express from 'express';
import mongoose from 'mongoose';
import cors from 'cors';
import dotenv from 'dotenv';
import path from 'path';
import { fileURLToPath } from 'url';

// 导入路由
import userRoutes from './backend/routes/userRoutes.js';
import clothesRoutes from './backend/routes/clothesRoutes.js';
import outfitRoutes from './backend/routes/outfitRoutes.js';

// 配置dotenv
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
dotenv.config({ path: path.resolve(__dirname, '.env') });

// 初始化Express应用
const app = express();

// 中间件
app.use(cors());
// 增加JSON请求体大小限制为50MB
app.use(express.json({ limit: '50mb' }));
app.use(express.urlencoded({ limit: '50mb', extended: true }));

// 数据库连接
mongoose.connect(process.env.MONGODB_URI)
.then(() => {
  console.log('MongoDB 连接成功');
})
.catch(err => {
  console.error('MongoDB 连接失败:', err.message);
  console.error('提示: 请确保MongoDB服务已启动，或检查连接字符串配置是否正确。');
  console.error('注意: 即使MongoDB连接失败，服务器仍会继续运行，以便您可以查看和测试API功能。');
  // 不阻止服务器启动，以便用户可以查看API文档和基本功能
});

// 路由
app.get('/', (req, res) => {
  res.json({ message: '欢迎使用衣橱管理系统API' });
});

// 测试API
app.get('/api/test', (req, res) => {
  res.json({
    success: true,
    message: '服务器API工作正常',
    timestamp: new Date().toISOString()
  });
});

// API路由
app.use('/api/users', userRoutes);
app.use('/api/clothes', clothesRoutes);
app.use('/api/outfits', outfitRoutes);

// 错误处理中间件
app.use((err, req, res, next) => {
  console.error(err.stack);
  res.status(500).json({ message: '服务器错误', error: err.message });
});

// 启动服务器
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
  console.log(`服务器运行在 http://localhost:${PORT}`);
});